widget: Use gtk_widget_queue_allocate() when clip changes
authorBenjamin Otte <otte@redhat.com>
Wed, 16 Sep 2015 21:16:44 +0000 (23:16 +0200)
committerBenjamin Otte <otte@redhat.com>
Wed, 28 Oct 2015 18:44:27 +0000 (19:44 +0100)
There's no need to queue a full resize there.

gtk/gtkwidget.c

index 75fa7434f7af16adf28f1eb5f67f9f19d90ca395..b0713bff44489066c7ced0312bc8b188eb60a3ea 100644 (file)
@@ -8153,16 +8153,19 @@ gtk_widget_real_style_updated (GtkWidget *widget)
 
       if (widget->priv->anchored)
         {
-          static GtkBitmask *affects_size, *affects_redraw;
+          static GtkBitmask *affects_size, *affects_redraw, *affects_allocate;
 
           if (G_UNLIKELY (affects_size == NULL))
             {
-              affects_size = _gtk_css_style_property_get_mask_affecting (GTK_CSS_AFFECTS_SIZE | GTK_CSS_AFFECTS_CLIP);
+              affects_size = _gtk_css_style_property_get_mask_affecting (GTK_CSS_AFFECTS_SIZE);
+              affects_allocate = _gtk_css_style_property_get_mask_affecting (GTK_CSS_AFFECTS_CLIP);
               affects_redraw = _gtk_css_style_property_get_mask_affecting (GTK_CSS_AFFECTS_REDRAW);
             }
 
           if (changes == NULL || _gtk_bitmask_intersects (changes, affects_size))
             gtk_widget_queue_resize (widget);
+          else if (_gtk_bitmask_intersects (changes, affects_allocate))
+            gtk_widget_queue_allocate (widget);
           else if (_gtk_bitmask_intersects (changes, affects_redraw))
             gtk_widget_queue_draw (widget);
         }